package main

import (
	"fmt"
	"unsafe"
)

// 常量用作枚举
const (
	a = "abc"
	b = len(a)
	c = unsafe.Sizeof(a)
)

func main() {

	/**
	go 语言变量
	*/
	useVar()

	/**
	常量的应用
	*/
	useConst()

	//一个可以返回多个值的函数
	d, e, f := numbers()
	fmt.Println(d, e, f)

	// 計算
	add()

	/**
	关系运算符
	*/
	raelitve()

}

/**
go 语言变量
*/
func useVar() {
	var a string = "Runoob"
	fmt.Println(a)

	var b, c int = 1, 2
	fmt.Println(b, c)

	f := "Runoob" // var f string = "Runoob"

	fmt.Println(f)
}

/**
常量的应用
*/
func useConst() {
	const LENGTH int = 10
	const WIDTH int = 5
	var area int
	const a, b, c = 1, false, "str" //多重赋值

	area = LENGTH * WIDTH
	fmt.Printf("面积为 : %d", area)
	println()
	println(a, b, c)
}

//一个可以返回多个值的函数
func numbers() (string, string, string) {
	a, b, c := "1", "2", "str"
	return a, b, c
}

/**
計算加減乘除
*/
func add() {

	var a int = 21
	var b int = 10
	var c int

	c = a + b
	fmt.Printf("第一行 - c 的值为 %d\n", c) // \n 表示換行  %d 表示佔位符
	c = a - b
	fmt.Printf("第二行 - c 的值为 %d\n", c)
	c = a * b
	fmt.Printf("第三行 - c 的值为 %d\n", c)
	c = a / b
	fmt.Printf("第四行 - c 的值为 %d\n", c)
	c = a % b
	fmt.Printf("第五行 - c 的值为 %d\n", c)
	a++
	fmt.Printf("第六行 - a 的值为 %d\n", a)
	a = 21 // 为了方便测试，a 这里重新赋值为 21
	a--
	fmt.Printf("第七行 - a 的值为 %d\n", a)
}

/**
关系运算符
*/
func raelitve() {
	var a int = 21
	var b int = 10

	if a == b {
		fmt.Printf("第一行 - a 等于 b\n")
	} else {
		fmt.Printf("第一行 - a 不等于 b\n")
	}
	if a < b {
		fmt.Printf("第二行 - a 小于 b\n")
	} else {
		fmt.Printf("第二行 - a 不小于 b\n")
	}

	if a > b {
		fmt.Printf("第三行 - a 大于 b\n")
	} else {
		fmt.Printf("第三行 - a 不大于 b\n")
	}
	/* Lets change value of a and b */
	a = 5
	b = 20
	if a <= b {
		fmt.Printf("第四行 - a 小于等于 b\n")
	}
	if b >= a {
		fmt.Printf("第五行 - b 大于等于 a\n")
	}
}
